vlakna a COM-y

Otázka od: Miso

24. 11. 2004 16:03

Zdar !

..vo vlakne (v metode Execute) chcem creatnut nejaky COM, ale bohuzial mi to
pada..neviete niekto o nejakej carovnej formulke?

Dik,
Miso


Odpovedá: Radim Kunz

24. 11. 2004 16:18

Miso napsal(a):

>Zdar !
>
>..vo vlakne (v metode Execute) chcem creatnut nejaky COM, ale bohuzial mi to
>pada..neviete niekto o nejakej carovnej formulke?
>
>Dik,
>Miso
>
>
>
>
Carovna formulka zni: CoInitialize. Pokud chces pouzivat COM ve vlaknu,
musis na zacatku
zavolat CoInitialize a na konci CoUnitialize

Radim


Odpovedá: Tomas Bihary

24. 11. 2004 16:12

zkus pred vytvarenim zavolat CoInitialize() nebo CoInitializeEx()

  Tomas Bihary


> -----Original Message-----
> Zdar !
>
> ..vo vlakne (v metode Execute) chcem creatnut nejaky COM, ale
> bohuzial mi to
> pada..neviete niekto o nejakej carovnej formulke?
>
> Dik,
> Miso
>
>
>


Odpovedá: Miso

25. 11. 2004 9:30


----- Original Message -----
From: "Radim Kunz" <rkunz@casestudio.com>

> >..vo vlakne (v metode Execute) chcem creatnut nejaky COM, ale bohuzial mi
to
> >pada..neviete niekto o nejakej carovnej formulke?
> >
> >
> Carovna formulka zni: CoInitialize. Pokud chces pouzivat COM ve vlaknu,
> musis na zacatku
> zavolat CoInitialize a na konci CoUnitialize

..CoInitialize sa musi volat pred kazdym creatovanim nejakeho COM-u alebo
staci len raz?..ked som ho zavolal len raz, tak mi to pri asi 10-tich
COM-och islo ok, ale pri 1 to spadne na DAX Error - Catastrophic
failure...netusi niekto, cim to moze byt?

Dik,
M.


Odpovedá: Radim Kunz

25. 11. 2004 10:06


----- Original Message -----
From: "Miso" <delphinpp@atlas.cz>
To: <delphi-l@clexpert.cz>
Sent: Thursday, November 25, 2004 9:30 AM
Subject: Re: vlakna a COM-y


>
> ----- Original Message -----
> From: "Radim Kunz" <rkunz@casestudio.com>
>
>> >..vo vlakne (v metode Execute) chcem creatnut nejaky COM, ale bohuzial
>> >mi
> to
>> >pada..neviete niekto o nejakej carovnej formulke?
>> >
>> >
>> Carovna formulka zni: CoInitialize. Pokud chces pouzivat COM ve vlaknu,
>> musis na zacatku
>> zavolat CoInitialize a na konci CoUnitialize
>
> ..CoInitialize sa musi volat pred kazdym creatovanim nejakeho COM-u alebo
> staci len raz?..ked som ho zavolal len raz, tak mi to pri asi 10-tich
> COM-och islo ok, ale pri 1 to spadne na DAX Error - Catastrophic
> failure...netusi niekto, cim to moze byt?
>
> Dik,
> M.
>

CoInitialize bys mel volat na zacatku behu vlakna v TThread.Execute
a CoUninitialize na konci Execute. Pokud pouzivas COM, tak to Delphi
zavola automaticky diky tomu, zepouzijes nejakou unitu, ale jen v
primarnim vlaknu, ve vsech dalsich vlaknech ho musis zavolat pro kazde
vlakno sam.

Radim